package com.wangy.util;

import com.wangy.bean.Permission;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author yyzb
 * @date 2024/12/28 17:21
 */
public class PermissionHelper {
    /**
     * 使用递归方法建菜单
     * 找到每个头节点向下遍历
     * @param treeNodes 所有节点
     * @return
     */
    public static ArrayList<Permission> build(List<Permission> treeNodes){
        ArrayList<Permission> trees = new ArrayList<>();
        for (Permission treeNode: treeNodes){
            if (treeNode.getParentId() == 0L){
                treeNode.setLevel(1);
                trees.add(findChildren(treeNode, treeNodes));
            }
        }
        return trees;

    }

    /**
     * 找子节点
     * @param treeNode 需要寻找哪个节点的子节点
     * @param treeNodes 所有节点
     * @return 把treeNode及其所有子节点和子节点的节点 都封装完再返回出去
     */
    public static Permission findChildren(Permission treeNode, List<Permission> treeNodes) {
        // 将子节点设置为空列表
        treeNode.setChildren(new ArrayList<>());
        for (Permission it: treeNodes){
            if(Objects.equals(it.getParentId(), treeNode.getId())){
                // 每找到一个子节点就递归寻找这个节点的子节点
                it.setLevel(treeNode.getLevel() + 1);
                treeNode.getChildren().add(findChildren(it, treeNodes));
            }
        }
        // 子节点都已经找完了 把treeNode返回
        return treeNode;
    }
}
